﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
using System.Data;

namespace DAL
{
    public class CDiaDiem
    {

        public int max = 4; // so chu toi da
        private int[] maDiaDiem;
        private DataTable ketQua;
        private string input;
        public ListKey l;
        public ListKey lChuoiTuKhoa;

        // hàm khởi tạo đối tượng
        // nDung : chứa nội dung truyền từ textbox tìm kiếm 
        // l (LinkList ) chứa các từ textbox sau khi tách chuỗi và bỏ các kí tự đặc biệt
        // vd : textbox  " sieu thi quan 9 "
        // l :   sieu -> thi -> quan -> 9
        // lChuoiTuKhoa (LinkList) chứa các tổ hợp từ của l
        // lChuoiTuKhoa : sieu -> sieu thi -> sieu thi quan -> sieu thi quan 9
        public CDiaDiem()
        {
        }
        public CDiaDiem(string nDung)
        {
            l = new ListKey();
            lChuoiTuKhoa = new ListKey();
            input = nDung;
            maDiaDiem = new int[0];
            ketQua = null;
        }
        public void ChuoiChuanHoa()
        {

            char[] kiTuDacBiet = new char[] { '~', '`', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '+', '=', '|', '{', '[', '}', ']', ';', ':', '"', ',', '<', '>', '.', ' ' };
            string[] mangCuoi = input.Split(kiTuDacBiet, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < mangCuoi.Length; i++)
            {
                Key tuMoi = new Key(mangCuoi[i]);

                this.l.addKey(tuMoi);
            }
        }
        public void DuaVaoChuoiTuKhoa(Key headMoi)
        {
            int dem = 1;
            Key ptrTemp = headMoi;
            string temp = "";
            while (ptrTemp != null && dem <= max)
            {
                if (dem == 1)
                    temp += ptrTemp.giaTri;
                else
                    temp += " " + ptrTemp.giaTri;

                Key tuMoi = new Key(temp);
                lChuoiTuKhoa.addKey(tuMoi);
                ptrTemp = ptrTemp.pNext;
                dem++;
            }
        }
        public string DieuKienTruyVan(string cotDuLieu)
        {
            string dKien = " ";

            while (lChuoiTuKhoa.head != lChuoiTuKhoa.tail)
            {
                dKien += cotDuLieu + " like '%" + lChuoiTuKhoa.head.giaTri + "%' or ";
                Key temp = lChuoiTuKhoa.head;
                lChuoiTuKhoa.head = null;
                lChuoiTuKhoa.head = temp.pNext;

            }
            dKien += cotDuLieu + " like '%" + lChuoiTuKhoa.head.giaTri + "%'";

            return dKien;

        }
    }
}
